Kotlin هي لغة برمجة حديثة تم تطويرها بواسطة JetBrains. تُستخدم بشكل أساسي لتطوير تطبيقات Android، لكنها أيضًا تُستخدم في تطوير تطبيقات الويب وسيرفرات الخلفية (Back-end) وحتى تطبيقات سطح المكتب.
Kotlin هي لغة برمجة حديثة تم تطويرها بواسطة JetBrains. تُستخدم بشكل أساسي لتطوير تطبيقات Android، لكنها أيضًا تُستخدم في تطوير تطبيقات الويب وسيرفرات الخلفية (Back-end) وحتى تطبيقات سطح المكتب.
fun main() {
println("مرحبًا بك في Kotlin!")
}
val name = "Ali" // لا يمكن تغيير قيمته
var age = 25 // يمكن تغييره لاحقًا
age = 26 // ✅ هذا مسموح
// name = "Omar" ❌ سيؤدي إلى خطأ لأنه val
val number: Int = 10
val price: Double = 19.99
val message: String = "Hello Kotlin"
val isStudent: Boolean = true
المحددات (Modifiers) في Kotlin تُستخدم للتحكم في سلوك المتغيرات، الدوال، والصفوف. هناك أنواع مختلفة من المحددات، مثل محددات الوصول، محددات الأصناف والدوال، ومحددات التغير.
class Person {
private val secret = "هذه معلومة خاصة"
internal val age = 30
protected val name = "أحمد"
}
fun main() {
val person = Person()
println(person.age) // ✅ مسموح (لأنه internal)
// println(person.secret) ❌ غير مسموح (لأنه private)
}
open class Animal {
open fun makeSound() {
println("صوت غير محدد")
}
}
class Dog : Animal() {
override fun makeSound() {
println("Woof! Woof!")
}
}
fun main() {
val dog = Dog()
dog.makeSound() // Woof! Woof!
}
object Constants {
const val PI = 3.14
}
fun main() {
println(Constants.PI)
}
التنقل بين الشاشات في تطبيقات Android باستخدام Kotlin، فهناك عدة طرق للتصفح بين الأنشطة (Activities) أو الواجهات (Fragments).
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import android.widget.Button
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button = findViewById
val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("USERNAME", "Ahmed")
startActivity(intent)
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
class NewFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_new, container, false)
}
}
إذا كنت تبحث عن أنماط البرمجة المتقدمة في Kotlin، فإليك بعض المفاهيم القوية التي تساعد في كتابة كود نظيف وفعال.
fun operateOnNumbers(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
fun main() {
val sum = operateOnNumbers(5, 3) { x, y -> x + y }
println(sum) // 8
}
interface Logger {
fun log(message: String)
}
class ConsoleLogger : Logger {
override fun log(message: String) = println("Log: $message")
}
class UserService(logger: Logger) : Logger by logger
fun main() {
val service = UserService(ConsoleLogger())
service.log("تم إنشاء مستخدم جديد") // Log: تم إنشاء مستخدم جديد
}
sealed class Result
class Success(val data: String) : Result()
class Error(val message: String) : Result()
fun handleResult(result: Result) {
when (result) {
is Success -> println("نجاح: ${result.data}")
is Error -> println("خطأ: ${result.message}")
}
}
المشروع سيكون تطبيق آلة حاسبة يحتوي على واجهة مستخدم (UI) يمكن للمستخدم من خلالها إجراء العمليات الحسابية الأساسية (الجمع، الطرح، الضرب، القسمة).
@IBOutlet weak var displayLabel: UILabel!
@IBAction func numberPressed(_ sender: UIButton) {
let number = sender.titleLabel?.text
displayLabel.text = displayLabel.text! + number!
}
الجمل الشرطية والحلقات هي أدوات أساسية في البرمجة تسمح باتخاذ القرارات وتكرار العمليات.
val age = 18
if (age >= 18) {
println("أنت بالغ.")
} else {
println("أنت قاصر.")
}
for (i in 0..<5) {
println("الرقم: $i")
}
الدوال هي كتل من الكود يمكن استدعاؤها لتنفيذ مهمة محددة. تساعد في تنظيم الكود وإعادة استخدامه.
fun greet(name: String) {
println("مرحبًا، $name!")
}
fun main() {
greet("علي") // ✅ مرحبًا، علي!
}
المصفوفات هي هياكل بيانات تخزن مجموعة من العناصر في ترتيب معين. يمكن الوصول إلى العناصر باستخدام الفهرس.
val numbers = arrayOf(1, 2, 3, 4, 5)
println(numbers[0]) // ✅ 1
الهاش هو هيكل بيانات يخزن البيانات في أزواج مفتاح-قيمة. يمكن استخدامه لتخزين البيانات المرتبطة.
val person = mapOf("name" to "علي", "age" to "25")
println(person["name"]) // ✅ علي
الاستثناءات هي أخطاء تحدث أثناء تنفيذ البرنامج. يمكن التعامل معها باستخدام `try`، `catch`، و `finally`.
try {
val result = 10 / 0
} catch (e: ArithmeticException) {
println("حدث خطأ: ${e.message}")
} finally {
println("هذا الكود سيتم تنفيذه دائمًا.")
}